#ifndef HUEVO_H
#define	HUEVO_H

#include <string>
#include "Actor.h"
#include "ActoresConstantes.h"
#include "UtilidadesConstantes.h"
#include "Perimetro.h"
#include "tinyxml.h"
#include "Jugador.h"
//#include "Pajarito.h"

using namespace TP::Juego;
using namespace TP::Juego::Arena::Utilidades;

//class Pajarito;

namespace TP { namespace Juego { namespace Arena { namespace Actores {
    
class Huevo : public Actor {
public:
    Huevo();

    virtual ~Huevo();
    
    Huevo(const string& pNombre);
    
    virtual IColisionado* colisionar (IColisionado* pColisionado);
    
    virtual double getPoderAtaqueContraPajarito () = 0;
    
    virtual double getPoderAtaqueContraSuperficie () = 0;
    
    virtual double getPoderAtaqueContraCerditos () = 0;
    
    virtual string aXML();
    
    virtual string aXML(const string& pPath);
    
    virtual void parseXML (const string& pDescriptor);

    virtual TiXmlElement* aElementoXML () = 0;
    
    virtual void deElementoXML (TiXmlElement* pElemento) = 0;    
    
    Jugador* getJugadorMiembro() const;
    
    void setJugadorMiembro(Jugador* jugadorMiembro);
    
protected:

    Perimetro* colisionarContraPerimetro (Perimetro* pPerimetro);

    Piso* colisionarContraPiso (Piso* pPiso);

    Cerdito* colisionarContraCerdito(Cerdito* pCerdito);

    Huevo* colisionarContraHuevo(Huevo* pHuevo);

    MonticuloHuevos* colisionarContraMonticuloHuevo(MonticuloHuevos* pMonticuloHuevos);

    Caja* colisionarContraCaja(Caja* pCaja);

    Fruta* colisionarContraFruta(Fruta* pFruta);

    Actor* colisionarContraPajarito(Actor* pPajarito);
    
private:
    Jugador* _jugadorMiembro;
    
};
}}}}
#endif	/* HUEVO_H */

